package mantenedor.source;

import javax.swing.JOptionPane;
import java.sql.*;


/**
 *
 * @author Demoni<(^o^)>
 */
public class libroDB {
 public String codigo,titulo,autor,editorial;

    

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        if(codigo.length()!=0)
        {
            this.codigo = codigo;
        }
        else 
        {
            JOptionPane.showMessageDialog(null, "Error, Deve ingresar codigo");
        }
    }

    public String getEditorial() {
        return editorial;
    }

    public void setEditorial(String editorial) {
        this.editorial = editorial;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
 public libroDB(String codigo, String titulo, String autor, String editorial) {
        this.codigo = codigo;
        this.titulo = titulo;
        this.autor = autor;
        this.editorial = editorial;
    }

    public libroDB(String codigo) {
        this.codigo = codigo;
    }

    public libroDB() {
    }
 
    public void agregar()
    {
           try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:demoni/demoni@LocalHost:1521:XE");
            con.setAutoCommit(false);
            CallableStatement procedimiento;
            procedimiento =  con.prepareCall("{call insertarLibro(?,?,?,?)}");
            procedimiento.setString("co",getCodigo());
            procedimiento.setString("ti",getTitulo());
            procedimiento.setString("au",getAutor());
            procedimiento.setString("ed",getEditorial());
            procedimiento.execute();
            con.commit();
            con.close();
            JOptionPane.showMessageDialog(null,"Libro Agregado correctamente");
            
        } catch(Exception e) {
            JOptionPane.showMessageDialog(null,"Libro no agregado, Contactese con el proveedor. "+e.getMessage());
        }
    
    }
    public void buscar()
    {try 
        {
            
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:demoni/demoni@LocalHost:1521:XE");  
            con.setAutoCommit(false);
            String Sql="select * from Libros where codigo='"+getCodigo()+"'";
            Statement st=con.createStatement();
            ResultSet rs=st.executeQuery(Sql);
             while(rs.next()){
            setTitulo(rs.getString("titulo"));
            setAutor(rs.getString("autor"));
            setEditorial(rs.getString("editorial"));
             }
            con.close();   
            
        } catch(Exception e) {
            JOptionPane.showMessageDialog(null,e.getMessage());
        }

    }
    public void modificar()
    {
          try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:demoni/demoni@LocalHost:1521:XE");
            con.setAutoCommit(false);
            CallableStatement procedimiento;
            procedimiento =  con.prepareCall("{call modificarLibro(?,?,?,?)}");
            procedimiento.setString("co",getCodigo());
            procedimiento.setString("ti",getTitulo());
            procedimiento.setString("au",getAutor());
            procedimiento.setString("ed",getEditorial());
            procedimiento.execute();
            con.commit();
            con.close();
            JOptionPane.showMessageDialog(null,"Libro Modificado correctamente");
            
        } catch(Exception e) {
            JOptionPane.showMessageDialog(null,"Libro no Modificado, Contactese con el proveedor. "+e.getMessage());
        }
        
    }
    public void eliminar()
    {
          try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:demoni/demoni@LocalHost:1521:XE");
            con.setAutoCommit(false);
            CallableStatement procedimiento;
            procedimiento =  con.prepareCall("{call borrarLibros(?)}");
            procedimiento.setString("co",getCodigo()); 
            procedimiento.execute();
            con.commit();
            con.close();
            JOptionPane.showMessageDialog(null,"Libro Borrado correctamente");
            
        } catch(Exception e) {
            JOptionPane.showMessageDialog(null,"Libro no Borrado, Contactese con el proveedor. "+e.getMessage());
        }
    }
}
